package com.r2coding.domain.strategy.model.entity;

import com.r2coding.types.common.Constants;
import com.r2coding.types.enums.StrategyRuleModel;
import lombok.Builder;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;

import java.util.Arrays;

/**
 * 抽奖策略 充血实体
 *
 * @author caolx
 * @date 2025/7/25 7:27
 */
@Data
@Builder
public class StrategyEntity {
    /**
     * 抽奖策略ID
     */
    private Long strategyId;
    /**
     * 抽奖策略描述
     */
    private String strategyDesc;
    /**
     * 抽奖规则模型
     */
    private String ruleModels;

    /**
     * 获取策略ID下配置的规则模型
     *
     * @return 策略ID下配置的规则模型
     */
    public String[] ruleModels() {
        if (StringUtils.isEmpty(ruleModels)) {
            return new String[0];
        }
        return ruleModels.split(Constants.SPLIT);
    }

    /**
     * 判断此抽奖策略是否需要配置权重
     *
     * @return 权重策略
     */
    public String getRuleWeightModel() {
        return Arrays.stream(this.ruleModels()).filter(StrategyRuleModel.WEIGHT.getModel()::equals).findFirst().orElse(null);
    }
}
